package com.dubbo.mapper.other;

import com.dubbo.domain.other.Dict;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;
import java.util.Map;
/**
 * 数据字典mapper
 * @author chenwei
 * @date 2018年3月12日 下午5:25:50
 */
public interface DictMapper extends Mapper<Dict> {
	/**
	 * 查询字典类型数据
	 * 
	 * @author chenwei
	 * @date 2018年3月12日 下午5:27:33
	 * @param type
	 * @return
	 */
	@Select("select * from t_dict t where t.type = #{type}")
	List<Dict> listByType(@Param("type") String type);
	/**
	 * 根据type字段查询val字段值
	 * @author zcm
	 * @date 2018年9月4日 上午10:50:56
	 * @param type type字段条件
	 * @return
	 */
	@Select("SELECT" + 
			"	td.val" + 
			" FROM" + 
			"	t_dict td" + 
			" WHERE" + 
			"	type = #{type} " + 
			" LIMIT 1")
	String getVal(@Param("type") String type);
	
	/**
	 * 根据type字段获取多个type、value的值
	 * @author zcm
	 * @date 2018年9月4日 上午11:24:45
	 * @param types
	 * @return
	 */
	List<Map<String, Object>> getVals(@Param("types") String... types);
	
	
	
	/**
	 * 查询一个字典类型数据
	 * 
	 * @author chenwei
	 * @date 2018年3月12日 下午5:27:33
	 * @param type
	 * @return
	 */
	@Select("select * from t_dict t where t.type = #{type} AND t.k=1 LIMIT 1")
	Map<String,Object> getOne(@Param("type") String type);
	
	
	/**
	 * 校验dict表是否存在此信息
	 *
	 * @author hexianli
	 * @date 2018年11月22日 下午5:27:04
	 * @param id
	 * @param type
	 * @return
	 */
	@Select("SELECT (CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END ) AS result FROM t_dict t WHERE t.id = #{id} AND t.type = #{type}")
	boolean existDict(@Param("id") Long id, @Param("type") String type);
	
	
	/**
	 * 根据type查询值
	 *
	 * @author hexianli
	 * @date 2018年12月5日 下午6:13:49
	 * @param type
	 * @return
	 */
	@Select("SELECT t.id,t.val FROM t_dict t WHERE t.type = #{type}")
	List<Map<String, Object>> selectValbyType(@Param("type") String type);
}